package com.liveinstars.im.domain.manager;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liveinstars.api.im.query.ChatGroupQuery;
import com.liveinstars.im.domain.dao.model.ChatGroup;

import java.util.List;


/**
 * @author: ting
 * @date: 2020/3/3
 */
public interface ChatGroupManager extends IService<ChatGroup> {

    /**
     * 分页查询圈子列表
     * @param query
     * @return
     */
    Page<ChatGroup> pageByQuery(ChatGroupQuery query);

    /**
     * 查询圈子列表
     * @param query
     * @return
     */
    List<ChatGroup> listByQuery(ChatGroupQuery query);

    /**
     * 根据id获取圈子
     * @param id
     * @return
     */
    ChatGroup getById(Long id);

    /**
     * 删除圈子
     * @param id
     */
    void deleteById(Long id);

    /**
     * 根据创建者获取圈子列表
     * @param userId
     * @return
     */
    List<ChatGroup> listByCreateUserId(Long userId);

    /**
     * 获取点聊圈子
     * @param userIdA
     * @param userIdB
     * @return
     */
    ChatGroup getFriendsChatGroup(Long userIdA, Long userIdB);

    /**
     * 创建点聊圈子
     * @param applyUserId
     * @param acceptUserId
     */
    ChatGroup createFriendsChatGroup(Long applyUserId, Long acceptUserId);

    /**
     * 统计用户创建圈子数
     * @param userId
     * @return
     */
    Integer countCreateChatGroupByUserId(Long userId);

    List<ChatGroup> listByCreateUserIdAndInterestId(Long userId, Integer interestId);
}
